
const express = require('express');

let app = express();

app.use('/uploads', express.static('uploads'));

app.use(express.urlencoded());

// 调用express-jwt这个包来验证token是否正确
const jwt = require('express-jwt');
// 全局中间件
app.use(jwt({
    secret: 'jwt64', // 生成token时的 钥匙，必须统一
    algorithms: ['HS256'] // 必填，加密算法，无需了解
}).unless({ //unless表示配置一个path数组，数组中的请求路径全部跳过token检查
    path: ['/user/login', '/user/register'] // 除了这两个接口，其他都需要token检查
})
)

// 注册路由中间件 userRouter和heroRouter
const userRouter = require('./router/user_router');
const heroRouter = require('./router/hero_router');

app.use('/user', userRouter);
app.use('/hero', heroRouter);

// 当token验证失败，就会自动调用错误中间件
app.use((err, req, res, next) => {
    // 判断这个错误是来源于express-jwt这个第三方包抛出
    if (err.name === 'UnauthorizedError') {
        // res.status(401).send('invalid token...');
        res.json({ code: 401, msg: 'token验证失败，请重新登录' });
    }
});

app.listen(3001, () => {
    console.log('3001准备就绪');
})